// 导入项目所需的依赖
const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const ejs = require('ejs');
const cors = require('cors');

// 创建后台程序
const app = express();

// 设置跨域共享资源
app.use(cors());

// 视图渲染引擎(html)
app.set('views', path.join(__dirname, 'views'));
// 视图引擎
app.engine('html', ejs.__express);
app.set('view engine', 'html');


// 运行日志
app.use(logger('dev'));

// 解析post方式的文档
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());

// 设置静态资源目录
// 路径： 例如   /css/base.css
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'node_modules')));

// 设置路由
// api 接口
// 用户路由
app.use('/api/user', require('./routes/api/user'));

// 管理员的路由
app.use('/api/admin', require('./routes/api/administrator'));

// 车辆管理路由
app.use('/api/vehicle', require('./routes/api/vehicle'));

// 车辆停车记录
app.use('/api/parkingRecord', require('./routes/api/parkingRecord'));

// 停车场信息管理
app.use('/api/parkingLot', require('./routes/api/parkingLot'));

// 订单信息管理
app.use('/api/feeRecord', require('./routes/api/feeRecord'));

// 钱包信息管理
app.use('/api/wallet', require('./routes/api/wallet'));

// 识别车牌号码
app.use('/ocr', require('./routes/ocr'));



// 渲染 web 页面
app.use('/', require('./routes/web/index'));




// 找不到资源404, 服务端发生异常
app.use(function(req, res, next) {
  next(createError(404));
});

// 错误处理
app.use(function(err, req, res, next) {
  // 设置局部变量，只在开发中提供错误
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  // 渲染错误页面
  res.status(err.status || 500);
  res.render('error');
});

// 把当前模块挂载到系统对象 (主模块)
module.exports = app;

